import { json } from "stream/consumers";

// 编写代码检视提示词
const generalCodeReviewPrompt = {
    role: "user",
    content: `你是一名经验丰富的代码审查专家。请帮我检视以下带有行号信息的代码，分析代码中存在的问题，提出检视意见，并以json格式输出检视意见。
以下是待检视的代码（每一行会以'line n'开头，其中'n'表示行号）,文件路径为{review_file_name}：
\`\`\`{review_file_type}
{review_full_code}
\`\`\`


### 请按照以下步骤进行代码检视
第一步：逐行分析代码，理解完整代码内容，分析代码的整体结构和功能；

第二步：仔细分析每一行的代码，找出其中的错误或漏洞，并给出分析过程，最后提出检视意见；
请优先关注性能效率、安全类问题。
1.性能效率：如未优化的算法、重复计算、数据库查询低效、频繁I/O操作等。
2.安全编码：如SQL注入、XML注入、命令注入、跨站脚本、敏感信息泄露、权限管理、内存泄露、异常处理等。
注意：由于给出的代码并不完整，你可能会误以为某行代码存在问题，但实际上并没有问题。
因此，在分析时，不要孤立的分析某一行或某一段代码，要将代码放在整体中进行分析。
在初步发现问题时，结合代码前后上下文进行检查，确认问题有效再输出。

第三步：将第一步和第二步的分析结果总结为json格式，模板如下：
\`\`\`json
{
    "has_review": true/false, // 是否有代码检视结果，true表示有，false表示没有
    "review_comments": [
        {
            "categories": "问题类别",
            "severity": "严重程度，分为["建议", "一般", "严重", "致命"]",
            "review_comment": "检视意见内容，要包括代码功能、代码问题、问题原因、问题解决办法",
            "line": "问题所在的代码行，必须是单独的行，不要输出区间"
        },
        {
            "categories": "问题类别",
            "severity": "严重程度，分为["建议", "一般", "严重", "致命"]",
            "review_comment": "检视意见内容，要包括代码功能、代码问题、问题原因、问题解决办法",
            "line": "问题所在的代码行，必须是单独的行，不要输出区间"
        }
    ]
}
\`\`\`
如果您没有发现任何代码问题，请回答：
\`\`\`json
{
    "has_review": false
}
\`\`\`

### 请遵循以下要求：
# 聚焦严重、致命问题：重点分析和输出对代码具有严重影响的问题，可以忽略对代码影响不大的一般和建议类问题；
# 禁止假设：由于给出的代码可能是代码片段或者单个文件的代码，因此会天然确实部分上下文信息，在缺失上下文信息时禁止假设或猜测上下文；
# 不要认为代码存在：”变量未导入、变量为定义、变量未声明、变量未使用“等相关问题可能因为给出的代码片段不完整造成，请忽略该类问题；
# 必须输出json格式：json中的每条检视意见，都要详细说明代码问题、分析过程、解决方法，且必须使用中文回答；
# 限定范围：只对{review_start_line}行至{review_end_line}行区间代码进行检视意见输出，不要输出超出给定区间的代码问题；
`
};

export { generalCodeReviewPrompt };